Skip to main content

ワークフローのカスタムコード記述仕様

背景:セキュリティ上の理由から、【pythonカスタムスキルコード】および【高度なオーケストレーション-コードノード】に対して、コード記述の規範を説明します。

サポートされているPythonパッケージ

1. 組み込み関数と型

  • dict
  • sorted
  • filter
  • map
  • enumerate

2. 標準ライブラリモジュール

データ処理

  • json
  • decimal
  • uuid
  • base64
  • hashlib

文字列処理

  • re (正規表現)
  • string
  • textwrap
  • difflib (差分比較)

データ構造とアルゴリズム

  • copy
  • bisect (二分探索)
  • heapq (ヒープキュー)
  • statistics (統計計算)

数学計算

  • math
  • operator (演算子関数)

日付と時間

  • datetime
  • time
  • calendar

その他ツール

  • random (乱数生成)
  • requests (HTTPリクエスト)

3. 型アノテーション(typingモジュール)

  • typing (モジュール本体)
  • Any
  • Union
  • Optional
  • Literal
  • Final
  • ClassVar
  • TypeVar
  • Generic
  • Protocol
  • runtime_checkable
  • overload
  • cast
  • TYPE_CHECKING
  • NoReturn
  • List
  • Dict
  • Set
  • Tuple
  • FrozenSet
  • Deque
  • Counter
  • ChainMap
  • OrderedDict
  • DefaultDict
  • MutableMapping
  • MutableSequence
  • MutableSet
  • Mapping
  • Sequence
  • AbstractSet
  • Collection
  • Container
  • Iterable
  • Iterator
  • Reversible
  • Sized
  • Hashable
  • Callable
  • Awaitable
  • Coroutine
  • AsyncIterable
  • AsyncIterator
  • AsyncGenerator
  • Generator
  • ContextManager
  • AsyncContextManager

構文規範

安全な環境分離などの制限を使用しているため、記述者は関連する規範に従ってコードを書く必要があります。前提:組み込み構文と組み込みライブラリ、および限定された標準ライブラリのみサポートされます。

  1. mathモジュールの使用
import math

def calculate(a, b):
result = math.fsum([a, b])
return result

誤った書き方:

from math import fsum

def calculate(a, b):
result = fsum([a, b])
return result

説明:現在のコードブロックのインポート制限では、importパッケージ時に親パッケージのみのインポートが許可されており、from a import bの構文はサポートされていません。

  1. datetimeの使用

正しい書き方:

import typing
from datetime import datetime


def get_weather(location: str, date: typing.Optional[str] = None) -> dict:
# デフォルト日付の処理
if date is None:
formatted_date = datetime.datetime.now().strftime("%Y-%m-%d")
else:
try:
# よくある日付フォーマットを解析
if len(date) == 8 and date.isdigit():
# YYYYMMDD形式の処理
date_obj = datetime.datetime.strptime(date, "%Y%m%d")
else:
# 標準形式YYYY-MM-DDを試す
date_obj = datetime.datetime.strptime(date, "%Y-%m-%d")
formatted_date = date_obj.strftime("%Y-%m-%d")
except ValueError:
# フォーマットが一致しない場合、元の入力を使用(API呼び出し失敗の可能性あり)
formatted_date = date

# ここはダミーデータです。実際のアプリケーションでは天気APIを呼び出す場合があります
weather_data = {
"location": location,
"date": formatted_date,
"forecast": "sunny",
"temperature": "25°C",
"wind": "light breeze"
}
return weather_data

誤った書き方:

from typing import Optional, List, Dict, Any, Union, Callable
from datetime import datetime
...省略...